' **************************************************

' *                   APP11.00                      *

' **************************************************

'THIS PROGRAM CREATES SAMPLED DATA NEAR THE NYQUEST.  THE SECOND PART

'OF THE ILLUSTRATION CONVOLVES THE OVERSAMPLED DATA WITH A SINC FUNCTION

SCREEN 11: CLS : PM = 1:  F1 = .9

PI = 3.141592653589793#: PI2 = 2 * PI: K1 = PI2 / 200

DIM C(128)

' CREATE SAMPLED DATA PATTERN

X0 = 20: Y0 = 20: XX = 620: YX = 320: YM = 220

LINE (X0, Y0)-(X0, YX) ' DRAW Y AXIS

LINE (XX, YM)-(X0, YM) ' DRAW X AXIS

FOR N = 0 TO 20.01 STEP .01 ' CREATE SAMPLED DATA PATTERN

X1 = N * F1 * PI: Y1 = COS(X1) ' CALCULATE DATA POINT

LINE -(X0 + N * 600 / 20, YM - Y1 * 150) ' DRAW SINUSOID

IF CINT(N / 1) = CINT(100 * (N / 1)) / 100 THEN GOSUB 60 ' SAMPLE DATA

NEXT N

INPUT A$ ' WAIT USER PROMPT

'  *********************************************************************

'  ***********  OVERSAMPLE/CONVOLVE DATA WITH SINC FUNCTION  ***********

'  *********************************************************************

' FIRST EXPAND DATA ARRAY

30 FOR N = 20 TO 40: C(N) = C(N - 20): NEXT N ' REPEAT 1ST 20

FOR N = 40 TO 80: C(N) = C(N - 20): NEXT N ' REPEAT 1ST 40

'  ***  START OVERSAM0PLE - CONVOLUTION ***

32 FOR N = 20 TO 40

FOR D = 0 TO .75 STEP .25

IF D = 0 THEN Y2 = C(N) ELSE Y2 = (C(N) * SIN(PI * D) / (PI * D)) + (C(N + 1) * SIN(PI * (1 - D)) / (PI * (1 - D)))

FOR I = 1 TO 20

Y2 = Y2 + (C(N + I) * SIN(PI * (I - D)) + C(N - I) * SIN(PI * (I + D))) / (PI * (I + D))

'PRINT "I ="; I, "  D ="; D, "Y ="; Y

'608 A$ = INKEY$: IF A$ = "" THEN 608

610 NEXT I

40 CIRCLE (X0 + ((N + D - 20) * 600) / 20, YM - (PM * Y2 * 150)), 2, 14

NEXT D

NEXT N

INPUT A$: STOP



'  **********************************************

60 ' SUBROUTINES TO SAMPLE AND PLOT DATA (EVERY 20TH DATA POINT)

LINE (X0 + N * 600 / 20, YM)-(X0 + N * 600 / 20, YM - Y1 * 150)

C(N) = Y1 ' SAVE SAMPLED DATA POINT

CIRCLE (X0 + N * 600 / 20, YM - (PM * Y1 * 150)), 4, 15

RETURN









